NATIVE

settings_applicationsObject

NATIVE

Editing
  • bug_report

Internal slot[[Prototype]]

생성자(constructor)를 가진 객체 또는 인터페이스(interface)가 인스턴스(instance)를 생성할 때 상속할 수 있는 프로퍼티(property)와 메소드(method)를 가지고 있는 원형 객체를 참조하는 생성자의 은닉된 속성이다.

만약에 상속받은 객체 또는 인터페이스(interface)가 존재한다면 상속한 객체 또는 인터페이스(interface) 내부 슬롯(internal slot) [[Prototype]]의 프로퍼티(property)와 메소드(method)를 추가적으로 사용할 수 있다.

설명

Object 객체에 대한 원형을 가진 객체를 참조하는 은닉된 속성이며 Object를 상속한 모든 인터페이스의 생성자 함수(또는 다른 방식)를 통해 생성되는 모든 객체에게 상속(확장) 가능한 프로퍼티와 메소드를 가지고 있다. 또한 직접 속성과 메소드를 추가할 수도 있다.

이러한 이유로 상속 관계를 갖는 인터페이스는 [[Prototype]] 체인을 형성하게 된다. 이것을 객체지향(기반) 언어에서 다루는 '상속' 개념으로 볼 수 있다.

객체의 상속 관계에서 최상위 객체는 Object이고 Object도 생성자 함수를 통해 생성이 되므로 상위 [[Prototype]]을 갖는다. 그러나 최상위 객체이다 보니 Object의 상위 [[Prototype]]은 비워져 있는 null 상태를 갖는다.

하위 트리 탐색

  • Methods

    • hasOwnProperty()

      객체가 특정 프로퍼티를 가지고 있는지를 블린(boolean) 값으로 반환한다.

    • isPrototypeOf()

      해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지를 체크한다.

    • propertyIsEnumerable()

      매개 변수의 속성이 열거가능(enumerable)한지 여부를 체크한다.

    • toLocaleString()

      객체를 나타내는 문자열을  작동하는 지역(locale)의 방식으로 출력이 된다.

    • toString()

      객체를 나타내는 문자열을 반환한다.

    • valueOf()

      객체의 원시(primitive) 값을 반환한다.

  • Properties

    • constructor

      객체의 생성자 함수를 참조한다.

    • __proto__

      상속된 [[Prototype]] 참조하거나 설정가능하며 일반적으로 실제 코드상에서는 잘 사용되지 않는다. ECMAScript에서 사용되지 않는 비표준이지만 최신 웹브라우저에서는 비공식적으로 지원하고 있다. 따라서 곧 표준 속성으로 지원될 확률이 높다.

      현재는 표준 사양에 명시되었다.

지원 웹브라우저